/*----------------------------------------------------------------------------
 * Tencent is pleased to support the open source community by making TencentOS
 * available.
 *
 * Copyright (C) 2019 THL A29 Limited, a Tencent company. All rights reserved.
 * If you have downloaded a copy of the TencentOS binary from Tencent, please
 * note that the TencentOS binary is licensed under the BSD 3-Clause License.
 *
 * If you have downloaded a copy of the TencentOS source code from Tencent,
 * please note that TencentOS source code is licensed under the BSD 3-Clause
 * License, except for the third-party components listed below which are
 * subject to different license terms. Your integration of TencentOS into your
 * own projects may require compliance with the BSD 3-Clause License, as well
 * as the other licenses applicable to the third-party components included
 * within TencentOS.
 *---------------------------------------------------------------------------*/

#ifndef _TOS_ELFLOADER_ERR_H_
#define  _TOS_ELFLOADER_ERR_H_

#ifndef __MS_RTOS__
typedef enum elfloader_err_en {
    ELFLOADER_ERR_NONE,
    ELFLOADER_ERR_FD_READ_FAILED,
    ELFLOADER_ERR_HEADER_INVALID,
    ELFLOADER_ERR_NO_DYN,
    ELFLOADER_ERR_NO_SYMTAB,
    ELFLOADER_ERR_NO_STRTAB,
    ELFLOADER_ERR_NO_TEXT,
    ELFLOADER_ERR_NO_LOAD_SEGMENTS,
    ELFLOADER_ERR_OUT_OF_MEMORY,
    ELFLOADER_ERR_RELOCATE_FAILED,
    ELFLOADER_ERR_PTR_NULL,
    ELFLOADER_ERR_SECTION_NOT_FOUND,
    ELFLOADER_ERR_SYM_NOT_FOUND,
    ELFLOADER_ERR_TYPE_INVALID,
} el_err_t;
#else
typedef ms_err_t el_err_t;

#define ELFLOADER_ERR_NONE                  MS_ERR_NONE
#define ELFLOADER_ERR_FD_READ_FAILED        MS_ERR_MODULE_FD_READ_FAILED
#define ELFLOADER_ERR_HEADER_INVALID        MS_ERR_MODULE_HEADER_INVALID
#define ELFLOADER_ERR_NO_DYN                MS_ERR_MODULE_NO_DYN
#define ELFLOADER_ERR_NO_SYMTAB             MS_ERR_MODULE_NO_SYMTAB
#define ELFLOADER_ERR_NO_STRTAB             MS_ERR_MODULE_NO_STRTAB
#define ELFLOADER_ERR_NO_TEXT               MS_ERR_MODULE_NO_TEXT
#define ELFLOADER_ERR_NO_LOAD_SEGMENTS      MS_ERR_MODULE_NO_LOAD_SEGMENTS
#define ELFLOADER_ERR_OUT_OF_MEMORY         MS_ERR_KERN_HEAP_NO_MEM
#define ELFLOADER_ERR_RELOCATE_FAILED       MS_ERR_MODULE_RELOCATE_FAILED
#define ELFLOADER_ERR_PTR_NULL              MS_ERR_ARG_NULL_PTR
#define ELFLOADER_ERR_SECTION_NOT_FOUND     MS_ERR_MODULE_SECTION_NOT_FOUND
#define ELFLOADER_ERR_SYM_NOT_FOUND         MS_ERR_MODULE_SYM_NOT_FOUND
#define ELFLOADER_ERR_TYPE_INVALID          MS_ERR_MODULE_TYPE_INVALID
#endif

#endif /* _TOS_ELFLOADER_ERR_H_ */

